Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

156
Views
Typescript - Convert "object with promises as properties"-Type to "object with resolved promise values as properties"-Type

Is this possible in Typescript?

I want to turn e.g. something like this:

interface IPromiseObject {
    promiseA: Promise<number>;
    promiseB: Promise<string>;
}

Into this:

interface IResolvedPromiseObject {
    promiseA: number;
    promiseB: string;
}

I want to use it to resolve an object with promises as values, but still stay type safe. In this example, I need to convert IPromiseObject to an object with the same keys but the values resolved so that I can use it as return type.

export async function resolveAllObject<IPromiseObject>( promiseObject: IPromiseObject ): Promise<???> {
    const resolvedPromiseObject = {};
    for ( const key in promiseObject ) {
        const value = await promiseObject[ key ];        
        Object.assign( resolvedPromiseObject, { [ key ]: value } );
    }
    return resolvedPromiseObject;
}
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

You can map over the properties and use the Awaited utility type to extract the type inside the Promise.

type AwaitedObject<T> = {
  [K in keyof T]: Awaited<T[K]>
}

Usage:

interface IPromiseObject {
  promiseA: Promise<number>;
  promiseB: Promise<string>;
}

type AwaitedObject<T> = {
  [K in keyof T]: Awaited<T[K]>
}

type IResolvedPromiseObject = AwaitedObject<IPromiseObject>
// type IResolvedPromiseObject = {
//    promiseA: number;
//    promiseB: string;
// }

Playground

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!